package com.wyz.design.patterns.behaviou.bridgepattern;

/**
 * @ClassName Phone
 * @Description 手机抽象类 该类作为桥梁将手机和品牌连接在一起。也是桥接模式得核心
 * @Author wangyuezheng
 * @Date 2021/4/27 17:17
 */

public abstract class Phone {
    /**
     *  这里使用构造方法将品牌组合进来。组合的是品牌的接口，易于扩展
     */
    private Brand brand;

    public Phone(Brand brand){
        this.brand = brand;
    }

    /**
     *  每个手机都不同的类型,所以抽象出来用于子类实现。
     *   这个demo 使用了按钮手机 滑盖手机 智能手机
     * @return
     */
    public abstract String type();

    /**  开机 打电话 关机  是每个手机都有的行为。所以这里在抽象类中实现，子类可以不实现，不过可以重写*/
    /**
     *  开机
     */
    public void open(){
        System.out.printf("%s %s 开机。。。。",brand.getName(),type());
        System.out.println();
    }
    /**
     *  打电话
     */
    public void call(){
        System.out.printf("%s %s 手机打电话。。。。",brand.getName(),type());
        System.out.println();
    }

    /**
     *  关机
     */
    public void close(){
        System.out.printf("%s %s 手机关机。。。。",brand.getName(),type());
        System.out.println();
    }
}
